<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组的新增方法</title>
</head>

<body>

    <script>

        let arr1 = Array.of(1, 2, 3, 4)
        console.log(arr1);

        /* 
            copyWithin(参数1,参数2,参数3)
            参数1：从哪里开始替换
            参数2：替换的内容 从数组下标参数2开始
            参数3：替换的内容 从数组下标参数3结束（不包括下标参数3本身）

            如果不传参数3，替换的内容 是从下标参数2开始到结尾
         */
        let arr2 = [1, 2, 3, 4, 5, 6, 7, 8]
        arr2.copyWithin(0, 4, 6)
        console.log(arr2);

        /* 
            所需填充的数组，一定要有长度，否则无法填充
            fill：填充
         */
        let arr3 = [1]
        arr3.length = 3
        for (var index = 0; index < 3; index++) {
            arr3.fill(index + 1)
        }
        console.log(arr3);

        /* 
           keys：属性（键）
           values：值（值）
           entries：键值对放入数组中
         */
        let arr4 = ['a', 'b', 'c', 'd']

        for (const iterator of arr4.keys()) {
            console.log(iterator);
        }
        for (const iterator of arr4.values()) {
            console.log(iterator);
        }
        for (const iterator of arr4.entries()) {
            console.log(iterator);
        }

        /* 
           find：查找，一旦找到，退出不再执行剩下的
           findIndex：返回下标
         */

        let arr5 = ['a', 'b', 'c', 'd']
        let res5 = arr5.find(function (item, index) {
            console.log(item, index);
            return item == 'c'
        })
        console.log(res5);

        let index5 = arr5.findIndex(function (item, index) {
            console.log(item, index);
            return item == 'c'
        })
        console.log(index5);


        /* 
            includes：查找数组是否存在元素，返回布尔值
         */
        let arr6 = [1, 2, 4]
        console.log(arr6.includes(4));

        /* 
           flat：默认（无参数） 将二维数组 变成 一维数组
           注意：三维变一维数组，需要传2；四维变一维数组，需要传3，依次类推
           传Infinity参数，表示无穷大
         */
        let arr7 = [1, 2, 3, [4, 5, [6, 7]]]
        console.log(arr7.flat());
        console.log(arr7.flat(2));
        console.log(arr7.flat(Infinity));
        /* 
            every() 方法测试数组的所有元素是否都通过了指定函数的测试。
            返回类型：布尔值
         */

        let arr8 = [1, 2, 3, 4, 5]
        let flag8 = arr8.every(function (item) {
            return item >= 1
        })
        console.log(flag8);

        /* 
           some() 方法测试数组中的某些元素是否通过了指定函数的测试。
           返回类型：布尔值
         */
        let arr9 = [1, 2, 3, 4, 5]
        let flag9 = arr9.some(function (item) {
            return item >= 5
        })
        console.log(flag9);
    </script>

</body>

</html>